#!/bin/bash

# ip_scan.sh - 快速扫描局域网内存活 IP
# 该脚本用于检测 IP 地址的使用情况，并输出活动 IP 和空闲 IP
#
# 功能：
# - 通过 ping 批量扫描 IP 存活状态
# - 记录已使用和未使用的 IP
# - 可选 arp-scan 进行辅助检测（需要安装）
#
# 用法：
# ./ip_scan.sh 192.168.1  # 仅指定网络段（默认扫描 192.168.1.0/24）

# 指定网络段（默认 192.168.1）
NETWORK="${1:-192.168.1}"
START_IP=1
END_IP=254

# 输出文件
USED_IP_FILE="used_ips.txt"
FREE_IP_FILE="free_ips.txt"

# 清空旧的扫描结果
> $USED_IP_FILE
> $FREE_IP_FILE

echo "[INFO] 开始扫描 ${NETWORK}.0/24 网段..."

# 批量 ping IP，检测是否存活
for i in $(seq $START_IP $END_IP); do
    IP="${NETWORK}.${i}"
    if ping -c 1 -W 1 $IP &>/dev/null; then
        echo "[ACTIVE] 发现活动 IP: $IP"
        echo $IP >> $USED_IP_FILE
    else
        echo $IP >> $FREE_IP_FILE
    fi
done

echo "[INFO] 扫描完成！"
echo "[INFO] 活跃 IP 列表: $USED_IP_FILE"
echo "[INFO] 空闲 IP 列表: $FREE_IP_FILE"

# 可选：使用 arp-scan 进行更深层次扫描（需安装）
if command -v arp-scan &>/dev/null; then
    echo "[INFO] 运行 arp-scan 进行辅助扫描..."
    sudo arp-scan --localnet --interface=eth0 | awk '{print $1}' >> $USED_IP_FILE
    sort -u -o $USED_IP_FILE $USED_IP_FILE
fi

echo "[INFO] 扫描完成，结果已保存。"

